package com.yy.encap;

/**
 * chapter08  com.yy.encap
 * 2023-04-03 22:22
 *
 * @author yy yuyue
 * description : 不可描述
 * @date 2023/4/3 22:22
 */


/**
 *  创建程序, 在其中定义两个类: Account和AccountTest类体会Java的封装性.
 *  Account类要求具有属性: 姓名(长度为2位3位4位), 余额(必须>20)
 *  密码(必须是六位), 如果不满足, 则给出提示信息, 并且给默认值(程序员自己定)
 *  通过setXxx的方法给Account 的属性赋值
 *  在AccountTest中测试
 */
public class Account {
    //为了封装, 将3个属性设置为private
    private String name;
    private double balance;
    private  String pwd;//密码的字符串类型的


    //提供两个构造器
    public Account(){

    }
    public Account(String name, double balance, String pwd){
        this.setName(name);
        this.setBalance(balance);
        this.setPwd(pwd);
    }


    //姓名(长度为2位3位4位)
    public void setName(String name){
        if(name.length() >= 2 && name.length() <= 4){
            this.name = name;
        }else {
            System.out.println("姓名要求 (长度为2位3位4位) , 默认值 无名");
            this.name = "无名";
        }

    }
    public String getName(){
        return this.name;
    }

    //密码 (必须是六位)
    public void setPwd (String pwd){
        if(pwd.length() == 6){
            this.pwd= pwd;
        } else{
            System.out.println("密码 (必须是六位) 默认密码为 000000");
            this.pwd = "000000";
        }

    }
    public String getPwd(){
        return this.pwd;
    }
    //余额(必须>20)
    public void setBalance (double balance){
        if(balance > 20){
            this.balance = balance;
        }else {
            System.out.println("余额(必须>20) 默认为1");//成员变量有默认值,非0即空
            this.balance = 1;
        }

    }
    public double getBalance(){
        return  this.balance;
    }
    //显示账户信息
    public void showInfo(){
        //可以增加权限的校验

        System.out.println("账号信息 name=" + name + " 余额=" + balance + " 密码=" + pwd);

//        if(){
//
//            System.out.println("账号信息 name=" + name + " 余额=" + balance + " 密码=" + pwd);
//
//        }else{
//            System.out.println("你无权查看...");
//        }
    }
}
